//#include <stdio.h>
//#include <unistd.h>
//
//int main()
//{
//    printf("这是一个进程,pid:%d\n", getpid());
//    while(1)
//    {
//        //方便查看R状态
//    }
//    return 0;
//}

//#include <stdio.h>
//#include <unistd.h>
//
//int main()
//{
//    printf("这是一个进程,pid:%d\n", getpid());
//    int a;
//    while(1)
//    {
//        scanf("%d", &a);//方便查看S状态
//        printf("%d\n", a);
//    }
//    return 0;
//}


//#include <stdio.h>
//#include <unistd.h>
//
//int main()
//{
//    printf("这是一个进程,pid:%d\n", getpid());
//    while(1)
//    {
//        sleep(1);
//        printf("这是一个进程,pid:%d\n", getpid());
//    }
//    return 0;
//}


//#include <stdio.h>
//#include <unistd.h>
//
//int main()
//{
//    printf("这是一个进程,pid:%d\n", getpid());
//    while(1)
//    {
//        sleep(1);
//        printf("这是一个进程,pid:%d\n", getpid());
//    }
//    return 0;
//}


//#include <stdio.h>
//#include <unistd.h>
//#include <sys/types.h>
//int main()
//{
//    pid_t id = fork();
//    if(id == 0)
//    {
//        //僵尸进程，查看Z状态
//        int cnt = 5;
//        while(cnt--)
//        {
//            printf("我是一个子进程，pid:%d, ppid:%d\n", getpid(), getppid());
//            sleep(1);
//        }
//    }
//    else if(id > 0)
//    {
//        while(1)
//        {
//            printf("我是一个父进程，pid:%d\n", getpid());
//            sleep(1);
//        }
//    }
//    else 
//    {
//        perror("fork");
//        return 1;
//    }
//    return 0;
//}


#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
    pid_t id = fork();
    if(id == 0)
    {
        //孤儿进程
        while(1)        
        {
            printf("我是一个子进程，pid:%d, ppid:%d\n", getpid(), getppid());
            sleep(1);
        }
    }
    else if(id > 0)
    {
        int cnt = 5;
        while(cnt--)
        {
            printf("我是一个父进程，pid:%d\n", getpid());
            sleep(1);
        }
    }
    else 
    {
        perror("fork");
        return 1;
    }
    return 0;
}
